package com.ldk.base.framework.util.baidu.routematrix;

public class RouteMatrixRequestParms {
	/**
	 * 必须 起点，以"|"分割，最多传50个点，且起终点乘积不超过50
	 * 
	 * @example 坐标格式为：lat纬度,lng经度|lat纬度,lng经度
	 */
	private String origins;
	/**
	 * 必须 目的地，同origins
	 */
	private String destinations;
	/**
	 * 选填 表示输出类型，可设置为xml或json，默认为xml。
	 */
	private String output = "xml";
	/**
	 * 选填
	 * 坐标类型，可选参数，默认为bd09ll。允许的值为：bd09ll（百度经纬度坐标）、bd09mc（百度摩卡托坐标）、gcj02（国测局加密坐标
	 * ）、wgs84（gps设备获取的坐标）。
	 */
	private String coord_type = "bd09ll";
	/**
	 * 只对驾车算路(driving)生效。  可选值： 10： 不走高速；
	 * 
	 * 11：常规路线，即多数人常走的一条路线，不受路况影响，可用于用车估价；
	 * 
	 * 12： 距离较短（考虑路况）：即距离相对较短的一条路线，但并不一定是一条优质路线。计算耗时时，考虑路况对耗时的影响；
	 * 
	 * 13： 距离较短（不考虑路况）：路线同以上，但计算耗时时，不考虑路况对耗时的影响，可理解为在路况完全通畅时预计耗时。
	 * 注：除13外，其他tactics 的耗时计算都考虑实时路况
	 */
	private String tactics = "13";
	/**
	 * 必须 用户的访问权限,ldk.ak=RThzSLZyjXZsEs5V4mqUILDudwpPtZo1
	 */
	private String ak;

	public String getOrigins() {
		return origins;
	}

	public String getDestinations() {
		return destinations;
	}

	public String getOutput() {
		return output;
	}

	public String getCoord_type() {
		return coord_type;
	}

	public String getTactics() {
		return tactics;
	}

	public String getAk() {
		return ak;
	}

	private RouteMatrixRequestParms(String origins, String destinations, String output,
			String coord_type, String tactics, String ak) {
		this.origins = origins;
		this.destinations = destinations;
		this.output = output;
		this.coord_type = coord_type;
		this.tactics = tactics;
		this.ak = ak;
	}

	public static class Builder {
		/**
		 * 必须 起点，以"|"分割，最多传50个点，且起终点乘积不超过50
		 * 
		 * @example 坐标格式为：lat纬度,lng经度|lat纬度,lng经度
		 */
		private String origins;
		/**
		 * 必须 目的地，同origins
		 */
		private String destinations;
		/**
		 * 选填 表示输出类型，可设置为xml或json，默认为xml。
		 */
		private String output = "xml";
		/**
		 * 选填 坐标类型，可选参数，默认为bd09ll。允许的值为：bd09ll（百度经纬度坐标）、bd09mc（百度摩卡托坐标）、gcj02（
		 * 国测局加密坐标）、wgs84（gps设备获取的坐标）。
		 */
		private String coord_type = "db09ll";
		/**
		 * 只对驾车算路(driving)生效。  可选值： 10： 不走高速；
		 * 
		 * 11：常规路线，即多数人常走的一条路线，不受路况影响，可用于用车估价；
		 * 
		 * 12： 距离较短（考虑路况）：即距离相对较短的一条路线，但并不一定是一条优质路线。计算耗时时，考虑路况对耗时的影响；
		 * 
		 * 13： 距离较短（不考虑路况）：路线同以上，但计算耗时时，不考虑路况对耗时的影响，可理解为在路况完全通畅时预计耗时。
		 * 注：除13外，其他tactics 的耗时计算都考虑实时路况
		 */
		private String tactics = "13";
		/**
		 * 必须 用户的访问权限
		 */
		private String ak;

		public Builder setOrigins(String origins) {
			this.origins = origins;
			return this;
		}

		public Builder setDestinations(String destinations) {
			this.destinations = destinations;
			return this;
		}

		public Builder setOutput(String output) {
			this.output = output;
			return this;
		}

		public Builder setCoord_type(String coord_type) {
			this.coord_type = coord_type;
			return this;
		}

		public Builder setTactics(String tactics) {
			this.tactics = tactics;
			return this;
		}

		public Builder setAk(String ak) {
			this.ak = ak;
			return this;
		}

		/**
		 * 构建请求参数
		 * 
		 * @return
		 */
		public RouteMatrixRequestParms build() {
			return new RouteMatrixRequestParms(origins, destinations, output, coord_type,
					tactics, ak);
		}
	}
}
